<?php

class CaptchaController extends Controller {
	
	/**
     * 输出验证码并把验证码的值保存的session中
     * 验证码保存到session的格式为： array('code' => '验证码值', 'time' => '验证码创建时间');
	 */
	public function captcha()
	{
		session_start();
        $key        =   CaptchaHelper::generateKey();
        
		//文件头...
		header("Content-type: image/png");
		//创建真彩色白纸
		$width = 100;
		$height = 40;
		$im = @imagecreatetruecolor($width, $height) or die("建立图像失败");
		//获取背景颜色
		$background_color = imagecolorallocate($im, 255, 255, 255);
		//填充背景颜色(这个东西类似油桶)
		imagefill($im,0,0,$background_color);
		//获取边框颜色
		$border_color = imagecolorallocate($im,200,200,200);
		//画矩形，边框颜色200,200,200
		imagerectangle($im,0,0,$width-1,$height-1,$border_color);
		
		//逐行炫耀背景，全屏用1或0
		for($i=2;$i<$height-1;$i++) {
			//获取随机淡色
			$line_color = imagecolorallocate($im,rand(200,255),rand(200,255),rand(200,255));
			//画线
			imageline($im,2,$i,$width-3,$i,$line_color);
		}
		
		//设置字体大小
		$font_size=40;
		
		//设置印上去的文字
		$Str = "01234567891234567890123456";
		
		//写入随机字串
		$x_col = 10;
		$code = '';
		for($i=0;$i<4;$i++){
			//获取随机较深颜色
			$text_color = imagecolorallocate($im,rand(50,180),rand(50,180),rand(50,180));
			//画文字
			$char = $Str[rand(0,25)];
			$code .= $char;
			imagechar($im,$font_size,$x_col,rand(5,15),$char,$text_color);
			$x_col = $x_col + $font_size-15+rand(0,1);
		}

		//把验证码保存在session中
        $key        =   CaptchaHelper::generateKey();
        $code       =   CaptchaHelper::generateCoce(strtoupper($code));
		$secode     =   array();
		$secode['code'] = $code;   // 把校验码保存到session
		$secode['time'] = time();  // 验证码创建时间
		Session::put($key, $secode);
		Session::save();
		
		//显示图片
		imagepng($im);
		//销毁图片
		imagedestroy($im);
		exit;
	}
}
